﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.DataAccess;
using Wypozyczalnia.Models;
using System.Data;

namespace Wypozyczalnia.Controllers
{
    [Authorize]
    public class ProductController : Controller
    {
        // 
        // GET: /Product/

        public ActionResult Index()
        {
            DALProducts _obj = new DALProducts();
            return View(_obj.GetProductList());
        }

        
     
        public ActionResult Zrealizowane(object o)
        {
            SprzetDBContext db = new SprzetDBContext();
            return View(db.Zamowienia.ToList());
        }

        [HttpPost]
        public ActionResult Zrealizowane(FormCollection collection)
        {
            SprzetDBContext db = new SprzetDBContext();
            
            

            foreach (Zamowienia item in db.Zamowienia.ToList())
            {

                if (item.zrealizowane == true && item.oddane==false)
                {
                    if (collection[item.id.ToString()][0] != db.Zamowienia.Find(item.id).oddane.ToString().ToLower()[0])
                    {
                        if (collection[item.id.ToString()][0] == 't')
                        {
                            db.Zamowienia.Find(item.id).oddane = true;
                            foreach (string item2 in item.id_zamowien.Split(','))
                            {
                                db.Sprzety.Find(int.Parse(item2)).ilosc++;
                                if (db.Sprzety.Find(int.Parse(item2)).ilosc > 0) db.Sprzety.Find(int.Parse(item2)).dostepnosc = true;

                            }
                        }
                        else
                        {
                            db.Zamowienia.Find(item.id).oddane = false;
                            foreach (string item2 in item.id_zamowien.Split(','))
                            {
                                db.Sprzety.Find(int.Parse(item2)).ilosc--;


                            }
                        }
                    }

                    
                }
            }
            db.SaveChanges();
            return RedirectToAction("Zrealizowane");
        }

        [HttpPost]
        public ActionResult Index(FormCollection collection)
        {
            if (collection.Count < 4) return RedirectToAction("Index");
            else
            {
                SprzetDBContext db_zamowienia = new SprzetDBContext();
                
                Zamowienia zamowienia = new Zamowienia();
                
                string user = User.Identity.Name;
                string zamowienie = string.Empty;
                string ilosc = string.Empty;
                string kwota = string.Empty;
                Dictionary<string, int> D = new Dictionary<string, int>();
                string pom = string.Empty;
                string uwagi = string.Empty;
                Dictionary<string, int> D_pom = new Dictionary<string, int>();
                string id_zamowien = string.Empty;

                for (int i = 0; i < collection["items[]"].Length; i++)
                {
                    if (char.IsNumber(collection["items[]"][i]))
                    {
                        pom = db_zamowienia.Sprzety.Find(int.Parse(collection["items[]"][i].ToString())).nazwa.ToString();
                        D_pom[pom] = int.Parse(collection["items[]"][i].ToString());
                        if(D.Keys.Contains(pom)) D[pom] += 1;
                        else D[pom] = 1;
                    }
                    id_zamowien += collection["items[]"][i];
                    
                }
                bool pom_bool = true;
                foreach (KeyValuePair<string, int> item in D)
                {
                    if (pom_bool) { zamowienie += item.Key + "(" + item.Value + ")"; pom_bool = false; }
                    else zamowienie += ", "+item.Key + "(" + item.Value + ")";
                    if (db_zamowienia.Sprzety.Find(D_pom[item.Key]).ilosc < item.Value) uwagi += "brak: " + item.Key+";";
                }
                //foreach (KeyValuePair<string, int> item in D_pom) id_zamowien += item.Value;

                zamowienia.id_zamowien = id_zamowien;
                zamowienia.uwagi = uwagi;
                zamowienia.zamowienie = zamowienie;
                zamowienia.user = user;
                zamowienia.zrealizowane = false;
                zamowienia.data_oddania = DateTime.Today;
                zamowienia.data_wypozyczenia = DateTime.Today;
                
                
                for (int i = 0; i < collection["citem"].Length; i++)
                {
                    ilosc += collection["citem"][i];
                }
                for (int i = 0; i < collection["cprice"].Length; i++)
                {
                    kwota += collection["cprice"][i];
                }
                zamowienia.ilosc = int.Parse(ilosc);
                zamowienia.kwota = double.Parse(kwota);

                db_zamowienia.Zamowienia.Add(zamowienia);
                
                db_zamowienia.SaveChanges();

                return RedirectToAction("Index", "Zamowienia");
            }
           // return RedirectToAction("Index", "Home", new { str = collection[collection.Count - 1][0] });
            
        }

    }
}
